package com.xiehospital.system.service.impl;

import java.util.ArrayList;
import java.util.List;

import com.xiehospital.common.core.domain.AjaxResult;
import com.xiehospital.common.core.domain.entity.SysReserve;
import com.xiehospital.common.core.domain.entity.SysUser;
import com.xiehospital.common.exception.ServiceException;
import com.xiehospital.common.utils.StringUtils;
import com.xiehospital.system.domain.SysBedBtype;
import com.xiehospital.system.domain.SysUserPost;
import com.xiehospital.system.mapper.SysBedBtypeMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.xiehospital.system.mapper.SysBedMapper;
import com.xiehospital.common.core.domain.entity.SysBed;
import com.xiehospital.system.service.ISysBedService;
import org.springframework.transaction.annotation.Transactional;

/**
 * 床位信息Service业务层处理
 *
 * @author xierujian
 * @date 2024-02-21
 */
@Service
public class SysBedServiceImpl implements ISysBedService
{
    @Autowired
    private SysBedMapper sysBedMapper;
    @Autowired
    private SysBedBtypeMapper bedBtypeMapper;


    /**
     * 查询床位信息
     *
     * @param bedId 床位信息主键
     * @return 床位信息
     */
    @Override
    public SysBed selectSysBedByBedId(Long bedId)
    {
        return sysBedMapper.selectSysBedByBedId(bedId);
    }

    /**
     * 查询床位信息列表
     *
     * @param sysBed 床位信息
     * @return 床位信息
     */
    @Override
    public List<SysBed> selectSysBedList(SysBed sysBed)
    {
        return sysBedMapper.selectSysBedList(sysBed);
    }

    /**
     * 新增床位信息
     *
     * @param sysBed 床位信息
     * @return 结果
     */
    @Override
    @Transactional
    public int insertSysBed(SysBed sysBed)
    {
        int rows = sysBedMapper.insertSysBed(sysBed);
        //新增床位和床位类型关联
//        insertBedBtype(sysBed);
        return rows;
    }

    /**
     * 修改床位信息
     *
     * @param sysBed 床位信息
     * @return 结果
     */
    @Override
    public int updateSysBed(SysBed sysBed)
    {
        Long bedId=sysBed.getBedId();
        Long patientId=sysBed.getPatientId();
        if (patientId!=null){
            sysBedMapper.updateSysPatient(sysBed);
        }
        return sysBedMapper.updateSysBed(sysBed);
    }

    /**
     * 批量删除床位信息
     *
     * @param bedIds 需要删除的床位信息主键
     * @return 结果
     */
    @Override
    public int deleteSysBedByBedIds(Long[] bedIds)
    {
        return sysBedMapper.deleteSysBedByBedIds(bedIds);
    }

    /**
     * 删除床位信息信息
     *
     * @param bedId 床位信息主键
     * @return 结果
     */
    @Override
    public int deleteSysBedByBedId(Long bedId)
    {
        return sysBedMapper.deleteSysBedByBedId(bedId);
    }

    /**
     * 出院操作
     *
     * @param bedId 床位信息主键
     * @return 结果
     */
    @Override
    public int dischargeSysBed(Long bedId)
    {
        //出院清除患者的床位信息，并设置为已出院
        sysBedMapper.dischargeSysPatient(bedId);
        return sysBedMapper.dischargeSysBed(bedId);
    }

    public List<SysBed> getCurrentUserBed(SysUser user){

        return sysBedMapper.getCurrentUserBed(user);
    }


}
